/**
 * 将秒转换为毫秒
 * @param seconds 秒数
 * @returns 毫秒数
 */
export function secondsToMs(seconds: number): number {
    return seconds * 1000;
}

/**
 * 将毫秒转换为秒
 * @param ms 毫秒数
 * @returns 秒数
 */
export function msToSeconds(ms: number): number {
    return ms / 1000;
}

/**
 * 将日期格式化为易读字符串
 * @param date 日期对象
 * @returns 格式化的日期字符串
 */
export function formatDate(date: Date): string {
    return date.toLocaleString();
}

/**
 * 创建超时Promise
 * @param ms 超时毫秒数
 * @returns 一个Promise，在指定毫秒数后解析
 */
export function createTimeout(ms: number): Promise<void> {
    return new Promise((resolve) => setTimeout(resolve, ms));
}

/**
 * 使用超时包装Promise
 * @param promise 要包装的Promise
 * @param ms 超时毫秒数
 * @param timeoutMessage 超时错误消息
 * @returns 包装后的Promise
 */
export function withTimeout<T>(promise: Promise<T>, ms: number, timeoutMessage: string = '操作超时'): Promise<T> {
    let timeoutId: NodeJS.Timeout;
    const timeoutPromise = new Promise<never>((_, reject) => {
        timeoutId = setTimeout(() => reject(new Error(timeoutMessage)), ms);
    });

    return Promise.race([
        promise.then((result) => {
            clearTimeout(timeoutId);
            return result;
        }),
        timeoutPromise
    ]);
}

/**
 * 延迟执行函数
 * @param ms 延迟毫秒数
 * @returns 延迟Promise
 */
export function delay(ms: number): Promise<void> {
    return new Promise((resolve) => setTimeout(resolve, ms));
} 